package com.ccnf.model.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.ccnf.model.entity.InvitationReport;
import com.ccnf.model.pojo.Report;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author developer
 * @since 2018-06-07
 */
public interface InvitationReportMapper extends BaseMapper<InvitationReport> {

    /**
     * 查询邀请函报表数据
     * @param reportType 报表数据字段
     * @param invitationId 邀请函ID
     * @param startTime 查询开始时间
     */
    List<Report> selectReport(@Param("reportType") Integer reportType,
                              @Param("invitationId") Long invitationId,
                              @Param("startTime") Long startTime);

    /**
     * 增加邀请函今日报表的今日浏览数加1
     * @param invitationId 邀请函ID
     * @param zeroSecond 今日零点时间
     */
    Integer incrementBrowseCount(@Param("invitationId") Long invitationId,
                                 @Param("zeroSecond") long zeroSecond);

    /**
     * 增加邀请函今日报表的今日登记数加1
     * @param invitationId 邀请函ID
     * @param zeroSecond 今日零点时间
     */
    Integer incrementRegisterCount(@Param("invitationId") Long invitationId,
                                   @Param("zeroSecond") long zeroSecond);

    /**
     * 增加邀请函今日报表的今日入场数加1
     * @param invitationId 邀请函ID
     * @param zeroSecond 今日零点时间
     */
    Integer incrementEnterCount(@Param("invitationId") Long invitationId,
                                 @Param("zeroSecond") long zeroSecond);

    /**
     * 增加邀请函今日报表的今日收藏数加1
     * @param invitationId 邀请函ID
     * @param zeroSecond 今日零点时间
     */
    Integer incrementCollectionCount(@Param("invitationId") Long invitationId,
                                     @Param("zeroSecond") long zeroSecond);

    /**
     * 增加邀请函今日报表的今日使用数加1
     * @param invitationId 邀请函ID
     * @param zeroSecond 今日零点时间
     */
    Integer incrementUseCount(@Param("invitationId") Long invitationId,
                              @Param("zeroSecond") long zeroSecond);

    /**
     * 增加邀请函今日报表的今日转发数加1
     * @param invitationId 邀请函ID
     * @param zeroSecond 今日零点时间
     */
    Integer incrementForwardCount(@Param("invitationId") Long invitationId,
                                  @Param("zeroSecond") long zeroSecond);

    List<Map<String, Object>> selectCountBy(@Param("referenceId") Long referenceId,
                                            @Param("endTime") Long endTime,
                                            @Param("type") Integer type,
                                            Pagination pagination);

    List<Map<String, Object>> selectUserRank(@Param("referenceId") Long referenceId,
                                            @Param("endTime") Long endTime,
                                             @Param("type") Integer type,
                                             @Param("recordNum") Integer recordNum,
                                             Pagination pagination);
}